﻿using Newtonsoft.Json;
using SQLite;

namespace Dpx.Models {
    /// <summary>
    /// 可追踪收藏类。
    /// </summary>
    [Table("Favorite")]
    public class TrackableFavorite : Favorite {
        /******** 公开变量 ********/

        /// <summary>
        /// 是否收藏。
        /// </summary>
        public override bool IsFavorite {
            get => base.IsFavorite;
            set {
                base.IsFavorite = value;
                Updated = true;
            }
        }

        /// <summary>
        /// 时间戳。
        /// </summary>
        public override long Timestamp {
            get => base.Timestamp;
            set {
                base.Timestamp = value;
                Updated = true;
            }
        }

        /// <summary>
        /// 是否更新。
        /// </summary>
        [Ignore]
        [JsonIgnore]
        public bool Updated { get; private set; }

        /******** 私有变量 ********/

        /******** 继承方法 ********/

        /******** 公开方法 ********/

        /// <summary>
        /// 可追踪收藏类。
        /// </summary>
        /// <param name="favorite">收藏。</param>
        public TrackableFavorite(Favorite favorite) {
            PoetryId = favorite.PoetryId;
            base.IsFavorite = favorite.IsFavorite;
            base.Timestamp = favorite.Timestamp;
        }

        /// <summary>
        /// 克隆为已更新的可追踪收藏。
        /// </summary>
        public TrackableFavorite CloneAsUpdated() {
            return new TrackableFavorite(this) {Updated = true};
        }

        /******** 私有方法 ********/
    }
}